From d70fb73eda107cd8336ad097684c639594615a3b Mon Sep 17 00:00:00 2001 From: "awilliam@xenbuild.aw" Date: Mon, 28 Aug 2006 13:18:36 -0600 Subject: [PATCH] [IA64] fix VTi hangs In some scenarios, xen_timer_interrupt will not set machine itm, this may make this LP not receive timer interrupt any more. Signed-off-by: Anthony Xu --- xen/arch/ia64/xen/xentime.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xen/arch/ia64/xen/xentime.c b/xen/arch/ia64/xen/xentime.c index b1d32c50ae..0ebce66c29 100644 --- a/xen/arch/ia64/xen/xentime.c +++ b/xen/arch/ia64/xen/xentime.c @@ -109,6 +109,7 @@ void xen_timer_interrupt (int irq, void *dev_id, struct pt_regs *regs) { unsigned long new_itm, old_itc; + int f_setitm = 0; #if 0 #define HEARTBEAT_FREQ 16 // period in seconds @@ -129,11 +130,12 @@ xen_timer_interrupt (int irq, void *dev_id, struct pt_regs *regs) vcpu_pend_timer(current); // ensure another timer interrupt happens even if domain doesn't vcpu_set_next_timer(current); + f_setitm = 1; } new_itm = local_cpu_data->itm_next; - if (!VMX_DOMAIN(current) && !time_after(ia64_get_itc(), new_itm)) + if (f_setitm && !time_after(ia64_get_itc(), new_itm)) return; while (1) { -- 2.30.2